package com.dhcc.bpm.modules.scf.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dhcc.bpm.modules.scf.dto.ScfSalesDetailsInfoDTO;
import com.dhcc.bpm.modules.scf.entity.ScfSalesDetailsInfo;
import com.dhcc.bpm.modules.scf.vo.ScfSalesDetailsInfoVO.ScfGetSalesDetailVO;
import com.dhcc.bpm.modules.scf.vo.ScfSalesDetailsInfoVO.ScfGetSalesListVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 服务类
 *
 * @author liuguoting
 * @since 2023-10-12
 */
public interface IScfSalesDetailsInfoService extends IService<ScfSalesDetailsInfo> {

    /**
     * 自定义分页
     *
     * @param page
     * @param scfSalesDetailsInfo
     * @return
     */
    IPage<ScfGetSalesListVO> selectScfSalesDetailsInfoPage(IPage<ScfGetSalesListVO> page, ScfSalesDetailsInfoDTO scfSalesDetailsInfo);

    /**
     * 查询详情
     *
     * @param rowId
     * @return
     */
    ScfGetSalesDetailVO getDetail(ScfSalesDetailsInfoDTO scfSalesDetailsInfo);

    /**
     * 每录入一条利废企业入库单则生成对应的销售明细数据
     * @param recyclingInNum
     */
    void generateSalesDetails(String recyclingInNum,String orgCode);

    /**
     * 每录入一条利废企业入库单则生成对应的销售明细数据
     * 重载方法-适用于利废入库批量导入时 无orgCode参数
     * @param recyclingInNum
     */
    void generateSalesDetails(String recyclingInNum);

    /**
     * 利废入库单新导入记录时由于未关联支付回单所以未设置开票时间，该方法用于利废入库单更新时
     *
     * @param recyclingInNum
     */
    void update(String recyclingInNum , String recyclingInRowId,String orgCode);
    /**
     * 销售明细-导入文件进行与生成的明细比对
     *
     * @param operatorId
     * @param file
     * @return
     */
    void isSalesDetails(String operatorId, MultipartFile file) throws IOException;

}
